Nginx的代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
upstream bbs.aaa.cn{
server 1.2.3.1:80;
server 1.2.3.4:80;
}
server {
listen 80;
server_name bbs.aaa.cn;
location / {
proxy_pass http://bbs.aaa.cn/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# access_log /home/logs/bbs.access combined;
}
upstream blog.aaa.cn{
server 1.2.3.1:80;
server 1.2.3.4:80;
}
server {
listen 80;
server_name blog.aaa.cn;
location / {
proxy_pass http://blog.aaa.cn/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# access_log /home/logs/ss.access combined;
}

        经测试发现,可以用nginx代理一个服务器上所有域名,方法如下:

  1. 主配置文件不需要更改任何配置

  2. 在vhosts目录下需要建立两个文件,一个是servername 列表文件,一个是虚拟主机配置文件

        两个文件内容分别为

  • servername
1
server_name www.123.net.cn www.alsdjfl.com www.asdfa1.com;

        就这么简单一行,当然这个server_name 还可以继续添加的

  • 虚拟主机配置文件
1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
include vhosts/servername; # 这里的文件就是上边那个servername列表文件
location / {
proxy_pass http://1.2.1.2/; #这里就是需要做代理的服务器ip地址了
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /dev/null;
}